<?php
namespace Amis\dataviewer;

use Amis\Basics\AmisBasics;

/**
 * 表格展示，不支持配置初始化接口初始化数据域，所以需要搭配类似像Service这样的，具有配置接口初始化数据域功能的组件，
 * 或者手动进行数据域初始化，然后通过source属性，获取数据链中的数据，完成数据展示。
 */
class TableColumns extends AmisBasics
{
    /**
     * 表头文本内容
     * @param string $label
     * @return $this
     */
    public function label(string $label)
    {
        $this->label = $label;
        return $this;
    }

    /**
     * 通过名称关联数据
     * @param string $name
     * @return $this
     */
    public function name(string $name)
    {
        $this->name = $name;
        return $this;
    }

    /**
     * 是否固定当前列
     * @param bool $IsLeft
     * @return $this
     */
    public function fixed(bool $IsLeft = true)
    {
        $this->fixed = $IsLeft ? 'left' : 'hight';
        return $this;
    }

    /**
     * 弹出框
     * @param $popOver
     * @return $this
     */
    public function popOver($popOver)
    {
        $this->popOver = $popOver;
        return $this;
    }

    /**
     * 快速编辑
     * @param $quickEdit
     * @return $this
     */
    public function quickEdit($quickEdit)
    {
        $this->quickEdit = $quickEdit;
        return $this;
    }

    /**
     * 是否可复制
     * boolean 或 {icon: string, content:string}
     * @param $copyable
     * @return $this
     */
    public function copyable($copyable)
    {
        $this->copyable = $copyable;
        return $this;
    }

    /**
     * 是否可排序
     * @param bool $sortable
     * @return $this
     */
    public function sortable(bool $sortable = false)
    {
        $this->sortable = $sortable;
        return $this;
    }

    /**
     * 是否可快速搜索
     * @param bool $searchable
     * @return $this
     */
    public function searchable(bool $searchable = false)
    {
        $this->searchable = $searchable;
        return $this;
    }

    /**
     * 列宽
     * @param int $width
     * @return $this
     */
    public function width(int $width)
    {
        $this->width = $width;
        return $this;
    }

    /**
     * 提示信息
     * @param string $remark
     * @return $this
     */
    public function remark(string $remark)
    {
        $this->remark = $remark;
        return $this;
    }
}